package com.mlizhi.modules.login;

import java.util.HashMap;
import java.util.Map;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.mlizhi.base.MlzApplication;
import com.mlizhi.base.NetWorkManager;
import com.mlizhi.base.SecurityUtil;
import com.mlizhi.base.Session;
import com.mlizhi.kingdom.R;
import com.mlizhi.modules.spec.util.JsonUtil;
import com.mlizhi.utils.Constants;
import com.mlizhi.utils.Utils;
import com.umeng.analytics.AnalyticsConfig;
import com.umeng.analytics.MobclickAgent;

/**
 * A {@link PreferenceActivity} that presents a set of application settings. On
 * handset devices, settings are presented as a single list. On tablets,
 * settings are split by category, with category headers shown to the left of
 * the list of settings.
 * <p>
 * See <a href="http://developer.android.com/design/patterns/settings.html">
 * Android Design: Settings</a> for design guidelines and the <a
 * href="http://developer.android.com/guide/topics/ui/settings.html">Settings
 * API Guide</a> for more information on developing a Settings UI.
 */
public class ForgetPassword1Activity extends Activity {

	private Session mSession;
	private MlzApplication mlzApplication = null;
	private EditText forgetPasswordPhone = null;
	private Context mContext;
	private RequestQueue mRequestQueue;
	private String phoneNumber = "";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		mlzApplication = (MlzApplication) getApplication();
		mSession = Session.get(getApplicationContext());
		mContext = this;
		setContentView(R.layout.activity_login_forget_password1);
		/** 发送策略定义了用户由统计分析SDK产生的数据发送回友盟服务器的频率。 */
		MobclickAgent.updateOnlineConfig( mContext );
		/** 设置是否对日志信息进行加密, 默认false(不加密). */
		AnalyticsConfig.enableEncrypt(true);
		forgetPasswordPhone = (EditText) findViewById(R.id.user_fpd_phone_label);
		if(Utils.matchPhoneNumber(mSession.getAccount())){
			forgetPasswordPhone.setText(mSession.getAccount());
		}
		mlzApplication.addActivity(this);
	}

	public void onForgetPswdClick(View view) {
		switch (view.getId()) {
		case R.id.forget_password1_back:
			this.finish();
			break;

		case R.id.forget_password_next:
			go2next();			
			break;

		default:
			break;
		}
	}

	
	private void go2next() {
		phoneNumber = forgetPasswordPhone.getText().toString();
		if(phoneNumber != null && !"".equals(phoneNumber)) {
			if(Utils.matchPhoneNumber(phoneNumber)){
				mlzApplication.putGlobalVariable(Constants.SMS_MOBILE_NUMBER, phoneNumber);
				getValidCode();
			}else{
				Toast.makeText(mContext, "请输入手机号！", Toast.LENGTH_SHORT).show();
			}
		}
	}
	
//	/**
//	 * 验证手机号码
//	 * @param phoneNumber
//	 * @return
//	 */
//	private boolean matchPhoneNumber(String phoneNumber) {
//		String regExp = "^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$";  
//		Pattern p = Pattern.compile(regExp);  
//		Matcher m = p.matcher(phoneNumber);  
//		return m.find();//boolean  
//	}
	
	/**
	 * 获取验证码
	 */
	private void getValidCode() {
			boolean netUsable = NetWorkManager.getNewInstance().isNetworkConnected(mContext);
			if (netUsable) {
				mRequestQueue = Volley.newRequestQueue(getApplicationContext());
				// Request a string response from the provided URL.
				StringRequest stringRequest = new StringRequest(Request.Method.POST, Constants.URL_POST_GET_FORGET_VALID_CODE,
						new Response.Listener<String>() {
							@Override
							public void onResponse(String response) {
								String code = JsonUtil.getHeaderCode(response);
								if (Constants.RESULT_JSON_HEADER_CODE_SUCCESS.equals(code)) {
									startActivity(new Intent(ForgetPassword1Activity.this,ForgetPassword2Activity.class));
								} else {
									Toast.makeText(mContext,JsonUtil.getHeaderErrorInfo(response),Toast.LENGTH_SHORT).show();
								}
							}
						}, new Response.ErrorListener() {
							@Override
							public void onErrorResponse(VolleyError error) {
								Toast.makeText(mContext, error.getMessage(),Toast.LENGTH_SHORT).show();
							}
						}) {
					
					@Override
					protected Map<String, String> getParams() throws AuthFailureError {

						String timestamp = SecurityUtil.getTimestamp();
						Map<String, String> params = new HashMap<String, String>();
						params.put("companyId", Constants.COMPANY_ID);
						params.put("mobile", phoneNumber);
						params.put(Constants.URL_TIMESTAMP, timestamp);
						params.put(Constants.URL_KEY,SecurityUtil.getMd5String(timestamp));
						return params;
					}
				};
				// stringRequest.setTag(TAG);
				mRequestQueue.add(stringRequest);
				mRequestQueue.start();
			} else {
				Toast.makeText(mContext, R.string.net_connected_failure,Toast.LENGTH_SHORT).show();
			}

	}
	
	@Override
	public void onResume() {
		super.onResume();
		MobclickAgent.onPageStart("SplashScreen"); //统计页面(仅有Activity的应用中SDK自动调用，不需要单独写)
	    MobclickAgent.onResume(this);          //统计时长
	}

	@Override
	public void onPause() {
		super.onPause();
		MobclickAgent.onPageEnd("SplashScreen"); // （仅有Activity的应用中SDK自动调用，不需要单独写）保证 onPageEnd 在onPause 之前调用,因为 onPause 中会保存信息 
		MobclickAgent.onPause(this);
	}
	
	
}